<?php
class Analise extends Zend_Db_Table
{
    protected $_name = "analise";
    
    public function adicionar($amostra, $acao, $usuario)
    {
        $acoes = array();     
        $acoes = explode(',', $acao);
              
            foreach ($acoes as $key => $action) {
                $dados = array(
                                'idAmostra'=> $amostra,
                                'idAcao' => $action ,
                                'eAtivo' => 1,
                                'idUsuCad' => $usuario,
                                'DataCadastro' => date('y-m-d')
                );
                $this->_db->beginTransaction();
                try
                {
                    $resultado = $this->insert($dados); 
                    $this->_db->commit();
                }
                catch (Zend_Exception $e)
                {
                    $this->_db->rollBack(); 
                }
            }
        
        if($resultado != 0)
            return 1;
        else
            return 0;
    }
    
    public function vrfcAnalise($id)
    {            
        $select = $this->select()
                ->from($this,'count(idAcao) as qt')
                ->where('idAmostra = ? AND eAtivo = 1', $id);
        
        $resultado = $this->fetchRow($select);
            
        $qtd = $resultado->qt;
        if($resultado->qt > 0)
            return 1;
        else
            return 0;
    }
    
    public function del($idAmostra)
    {
        $dados = array(
            'eAtivo' => 0
        );
        $where = $this->getAdapter()->quoteInto("idAmostra = ?", $idAmostra);
        $resultado = $this->update($dados, $where);
        return $resultado;
    }
    
    public function getAnalise(array $request, $idAmostra)
    {
        $dados = array();
		
	$select = $this->select()
                       ->from($this, 'COUNT(*) AS  qtd')
                       ->where('idAmostra = ? AND eAtivo = 1', $idAmostra);
                 
        $result = $this->fetchRow($select);
        
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}
		
	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

        $dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
        
        $select  = "SELECT an.idAcao, ac.Descricao FROM analise an";
        $select .= " INNER JOIN acao ac ON (an.idAcao = ac.idAcao)";
	$select .= " WHERE an.eAtivo = 1";
        $and = $this->getAdapter()->quoteInto(" AND an.idAmostra = ?", $idAmostra);
        $select .= $and;
        
        if($request['sidx']){
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
	}else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
	}
                
        $resultado = $this->_db->fetchAll($select);
              
        for ($cont = 0; $cont < count($resultado); $cont++)
	{
            $dados['rows'][$cont]['id'] =  $resultado[$cont]['idAcao'];
            $dados['rows'][$cont]['cell'] =  array( $resultado[$cont]['Descricao']
						  );
	}
	return $dados;
    }
    
    public function editar($amostra, $acao, $analise, $usuario)
    {
        $retorno = true;
        
        $inserirAcoes = array();     
        $inserirAcoes = explode(',', $acao);       
        
        $retirarAcoes = array();     
        $retirarAcoes = explode(',', $analise);
        
        $this->_db->beginTransaction();
        try
        {
            if($inserirAcoes[0]!='')
            {
                foreach ($inserirAcoes as $key => $action) {
                    $dadosInserir = array(
                                'idAmostra'=> $amostra,
                                'idAcao' => $action ,
                                'eAtivo' => 1,
                                'idUsuCad' => $usuario,
                                'idUsuAtu' => $usuario,
                                'DataCadastro' => date('y-m-d'),
                                'DataAtualizacao' => date('y-m-d')
                    );
                    $resultado = $this->insert($dadosInserir); 
                }
            }
            if($retirarAcoes[0]!='')
            {
                foreach ($retirarAcoes as $key => $acaoR) {
                    $dadosRetirar = array(
                                'eAtivo' => 0,
                                'idUsuAtu' => $usuario,
                                'DataAtualizacao' => date('y-m-d')
                    );
                    $where = $this->getAdapter()->quoteInto("idAmostra = ?", $amostra);
                    $where .= $this->_db->quoteInto(" AND idAcao = ?", $acaoR);
                    $result = $this->update($dadosRetirar, $where);
                }
            }
            $this->_db->commit();
       
         }
        catch (Zend_Exception $e)
        {
            $this->_db->rollBack();
            $retorno = false;
        }
        return $retorno;
    }
    
    public function semacoes(array $request, $idAmostra)
    {        
        $dados = array();
		
	$select = $this->select()
                       ->from($this, 'COUNT(*) AS  qtd')
                       ->where('idAmostra = ? AND eAtivo = 1', $idAmostra);
                 
        $result = $this->fetchRow($select);
        
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}
		
	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

        $dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
        
        $select  = "SELECT * FROM acao a";
        $select .= " WHERE a.eAtivo = 1";
	$select .= " AND NOT EXISTS (SELECT * FROM analise an";
        $select .= " WHERE a.idAcao = an.idAcao AND an.eAtivo = 1";
        $and = $this->getAdapter()->quoteInto(" AND an.idAmostra = ?)", $idAmostra);
        $select .= $and;
        
        if($request['sidx']){
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
	}else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
	}
                
        $resultado = $this->_db->fetchAll($select);
              
        for ($cont = 0; $cont < count($resultado); $cont++)
	{
            $dados['rows'][$cont]['id'] =  $resultado[$cont]['idAcao'];
            $dados['rows'][$cont]['cell'] =  array( $resultado[$cont]['descricao']
						  );
	}
	return $dados;
    }
}